/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package concoursbelote;

import java.util.ArrayList;

/**
 *
 * Définir un serveur du bar comme arbitre
 * @author Shehu
 */
public class ServeurArbitre extends Serveur
{

    public ServeurArbitre(String prenom, String surnom, double porteMonnaie, double coteDePopularite, String criSignificatif) 
    {
        super (prenom, surnom, porteMonnaie, coteDePopularite, criSignificatif);
    }
    
    
    /**
     * Return un int qui correspond au client aléatoirement choisi pour donner les cartes
     * @param i
     * @return 
     */
    public static int quiDonne (int i)
    {
        // coder fonction random qui prend au hasard un des 4 joueurs autour de la table
        
      System.out.println("Nom du Serveur : Le donneur de cette partie sera  ")  ;
      return i ;  
    }
    /**
     * Retourne la valuer d'une carte jouée en fonction du fait que l'on soit en mode Atout ou
     * en mode Hors Atout
     * @param couleurJouee
     * @param carte
     * @param atout
     * @author Shehu 
     */
    public static int valeurCartePli (String couleurJouee , Carte carte , String atout)// quoi en paramètres ?
    {
        int point=0;
        SigneCarte couleur = carte.getCouleur();
        String couleurAtout = couleur.getNomCouleur();
        
        if ( atout.equalsIgnoreCase(couleurAtout))
        {
             NumeroCarte num = carte.getNumero();
             point = num.getValeurAtout();
        }
        else
        {
            if (couleurJouee.equalsIgnoreCase(couleurAtout))
            {
                NumeroCarte num = carte.getNumero();
                point = num.getValeurHorsAtout();
            }
            else
            {
                point=0;
            }
         }
        return point;
     }
    
    /**
     * Retourne le nombre d'une carte jouée en fonction du fait qu'on soit en atout ou pas
     * @param carte
     * @param couleurCarte
     * @author Shehu
     */
    public static int pointsCarte(Carte carte ,String couleurCarte)
    {
        int point=0;
        SigneCarte couleur = carte.getCouleur();
        String couleurAtout = couleur.getNomCouleur();
        
        if(couleurCarte.equalsIgnoreCase(couleurAtout))
        {
            NumeroCarte num = carte.getNumero();
            point = num.getPointAtout();
        }
        else
        {
            NumeroCarte num = carte.getNumero();
            point = num.getPointHorsAtout();
        }
        return point ;
    }

    /**
     * Methode permettant de savoir si une équipe A a gagné une manche ou pas
     * @param equipeA
     * @param equipeB
     * @param indexJoueur
     * @author Shehu 
     */
    public static boolean gagneManche ( int equipeA , int equipeB ,int indexJoueur) 
    {
        boolean test =false ;
        
        if (indexJoueur==1 ||indexJoueur==3)
        {
            if(equipeA<equipeB)
                test=true;
            else
                test=false;
        }
        else
        {
            if (equipeA>equipeB)
                test=true;
            else
                test=false;
        }
        System.out.println ("...");
        return test;
     }
    
    
    /**
     * Methode permettant de vérifier si chaque carte jouée par le joueur est la carte à jouer
     * Méthode pour éviter que les joueurs gardent leurs atouts quand il ne faut pas
     * @param mainJoueur
     * @param carteJouee
     * @param couleurJouee
     * @param atout
     * @author Shehu 
     */
    public static boolean testCarteJouee (ArrayList <Carte> mainJoueur , Carte carteJouee , String couleurJouee , String atout)
    {
        boolean valide = false ;
        int tailleMain = mainJoueur.size();
        //System.out.println ("La couleur jouée est"+ couleurJouee);
        
        test : if (valide)
        {
            
        }
        else
        {
            if (carteJouee.getCouleur().equals(couleurJouee))
                valide=true;
            else
            {
                for(int i=0 ; i<tailleMain ;i++)
                {
                    if (mainJoueur.get(i).getCouleur().equals(couleurJouee))
                    {
                        valide = false ;
                        System.out.println("< Nom Serveur + l'Arbitre > : Veuillez jouer une carte de votre main de la même couleur demandée"+ couleurJouee+" SVP");
                        break test ;
                    }
                }
                if (carteJouee.getCouleur().equals(atout))
                {
                    valide=true;
                    break test;
                }
                else
                    for ( int i =0 ; i<tailleMain ; i++)
                    {
                        if (mainJoueur.get(i).getCouleur().equals(atout))
                        {
                            valide =false ;
                            System.out.println ("< Nom Serveur + l'Arbitre > : Veuillez jouer une carte d'atout"+ atout);
                            break test;
                        }
                    }
                valide = true ;
                break test;
            }
        }
        return valide ;
    }
    
    /**
     * Methode permettant de récupérer le numéro de la carte adéquate a jouer , de la la main du joueur
     * @param mainJoueur
     * @param couleurJouee
     * @param atout
     * @author Shehu 
     */
    public static int testCarteAJouer (ArrayList<Carte> mainJoueur , String couleurJouee , String atout)
    {
        int tailleMain = mainJoueur.size();
        int n =0;
        boolean valide = false;
        
        test : if (valide == false)
        {
            for (int i=0 ; i<tailleMain ; i++)
            {
                valide = mainJoueur.get(i).getCouleur().equals(couleurJouee);
                if (valide==true)
                {
                    n=i;
                    break test;
                }
            }
            for (int i=0 ; i <tailleMain ; i++)
            {
                valide = mainJoueur.get(i).getCouleur().equals(atout);
                if (valide==true)
                {
                    n=i;
                    break test;
                }
                
            }
            n=0;
        }
     return n;   
    }
   
    
    @Override
    public void offirUneTournee() 
    {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void refuserUnVerre(int index) 
    {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void offrirUneTournee(int indexClient) 
    {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    
    
    
}
